“Push technology” is a type of Internet-based communication in which information transmission is initiated by a “publisher” or a server computing device (“server”). It is contrasted with “pull technology” in which the request for information transmission is initiated by a receiving client computing device (“client”). Services with push technology can offer to clients push services. Push services are sometimes based upon information preferences expressed in advance. For example, a client might subscribe to one or more information “channels.” The server associated with the channels can then push information to the client when new content associated with the channel becomes available.
Regardless of how the users are identified for receiving the notifications, the server has to maintain a list of the users who are interested in a specific channel. For example, the server may have to store user identifications (“IDs”) of all the users interested in a particular channel. If the users have installed a mobile application (“app”) of the social networking application at multiple clients, the server may also have to store client device information for each of these clients in the lists. New content may become available in the subscribed channels or existing content may change in which case the server has to push the content to the subscribed users on their clients.
Typically, the server pushes the content to the clients in a standardized format. For example, the server can push an image in a specified resolution and a specified size. However, pushing the content in a standardized format to different types of clients can be disadvantageous. For example, if a smartphone and a tablet PC have different display screen sizes, presenting the image in the same format on both the clients can be disadvantageous—the image may appear small on the tablet PC, and therefore providing a sub-standard user experience. The real estate of the tablet PC may not be used optimally. Further, since the content is pushed in a standardized format, some of the clients, which may need to retrieve only a portion of the content, may end up downloading unnecessary content, thereby consuming additional computing and network resources.
Further, in some pull technology based services, to obtain the data from the service, the client may have to communicate with a data storage layer of the service directly. This can be inefficient, as connecting to the data storage layer consumes significant amount computing and networking resources. Typically, clients have less reliable network connection to the data storage layer and maintaining that connection can incur significant overhead, e.g., computing and networking resources.